// 0 1 
int n, m;
int f[maxn][max_size]; // 考虑前 i 个物品，选择总体积为 j 的最大总价值
// f[i][j] = max(f[i−1][j], f[i−1][j−wi] + vi)
// f[j] = max(f[j_pre], f[j_pre − wi] + vi)
int main() {
    f[i][0] = 0;
    for (int i = 1; i <= n; i++)
        for (int j = m; j >= w[i]; --j) // 倒序枚举 j
            f[j] = max(f[j], f[j - w[i]] + v[i]);
}